package base.web.pruebas;

import javax.ejb.EJB;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import pedidos.modelo.pruebas.DatosPrueba;
import static org.junit.Assert.*;

@RunWith(Arquillian.class)
public class PruebaBase {

	/**
	 * Despliega el proyecto para las pruebas
	 * @return
	 */
    @Deployment
    public static WebArchive createDeployment() {
        return ShrinkWrap
        	// crea una aplicación web
        	.create( WebArchive.class, "Test.war" )
        	
        	// incluyendo los paquetes del programa
        	.addPackages( true,
        			"base.accesoDatos.utils",
        			"base.modelo.pruebas",
        			"pedidos.accesoDatos",
        			"pedidos.logica",
        			"pedidos.modelo",
        			"pedidos.modelo.pruebas"
        			)

        	// agrega el persistence.xml
            .addAsResource( "META-INF/persistence.xml", "META-INF/persistence.xml" )
            
            // agrega el web.xml a WEB-INF
            .addAsWebInfResource( "WEB-INF/web.xml" )
            // agrega glassfish-resources to WEB-INF
            .addAsWebInfResource( "WEB-INF/glassfish-resources.xml" )            
            // incluye un archivo beans.xml en blanco
            .addAsWebInfResource( "WEB-INF/beans.xml")

            // agrega log4j.properties
            .addAsResource( "log4j.properties", "log4j.properties")
            .addAsResource( "logging.properties", "logging.properties")
            .addAsWebInfResource( "log4j.properties" )
            .addAsWebInfResource( "logging.properties" );
        
    }	
	
    // Inyección de EJBs y Persistencia
    // ----------------------------------------
    
    @EJB 
    DatosPrueba datosPrueba;
    
    @PersistenceContext ( unitName="app_PU" )
    EntityManager em;
    
    // Preparación de la prueba
    // ----------------------------------------
    
    @Before
    public void preparePersistenceTest() throws Exception {
        datosPrueba.borrarDatosPrueba();
        datosPrueba.crearDatosPrueba();
    }    
    

    // Pruebas
    // ----------------------------------------

	
	@Test
	public void prueba(){
		try {
			
		} catch (Exception e) {
			e.printStackTrace();
			fail("Saco error " + e.getMessage() );
		}
	}


}
